debian/patches: add patches to get the build-time tests passing under sbuild
authorSimon McVittie <smcv@debian.org>
Thu, 31 Mar 2016 08:02:34 +0000 (09:02 +0100)
committerSimon McVittie <smcv@debian.org>
Thu, 31 Mar 2016 08:02:34 +0000 (09:02 +0100)
debian/changelog
debian/patches/In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch [new file with mode: 0644]
debian/patches/Load-g-i-bindings-from-builddir-during-build-time-testing.patch [new file with mode: 0644]
debian/patches/Symlink-libreaddir-rand.so-into-tests-directory.patch [new file with mode: 0644]
debian/patches/series
debian/patches/tap-test-clean-up-temporary-test-directories-as-intended.patch [new file with mode: 0644]
debian/patches/test-xattrs-use-TAP-syntax-to-skip-test.patch [new file with mode: 0644]
debian/patches/various-tests-skip-if-temp-directory-lacks-xattr-support.patch [new file with mode: 0644]

index 64477d3aac109ccd929010e346c3141889ccd3ce..af52d2d038404bb13d750b01ed69f2d27120bf7c 100644 (file)
@@ -10,6 +10,8 @@ ostree (2016.4-1) UNRELEASED; urgency=medium
   * debian/control: build-depend on attr, for the tests (only required if
     /var/tmp supports extended attributes)
   * debian/rules: warn if there are leftover daemon processes after testing
+  * debian/patches: add patches to get the build-time tests passing under
+    sbuild
 
  -- Simon McVittie <smcv@debian.org>  Mon, 28 Mar 2016 12:02:59 +0100
 
diff --git a/debian/patches/In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch b/debian/patches/In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch
new file mode 100644 (file)
index 0000000..b8d97ad
--- /dev/null
@@ -0,0 +1,67 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Thu, 31 Mar 2016 08:27:32 +0100
+Subject: In tests that use gpg, terminate the gpg-agent after testing
+
+Otherwise we leak those processes.
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+---
+ tests/test-commit-sign.sh         | 1 +
+ tests/test-gpg-signed-commit.sh   | 2 ++
+ tests/test-pull-mirror-summary.sh | 2 ++
+ tests/test-pull-summary-sigs.sh   | 2 ++
+ tests/test-remote-gpg-import.sh   | 1 +
+ 5 files changed, 8 insertions(+)
+
+diff --git a/tests/test-commit-sign.sh b/tests/test-commit-sign.sh
+index 8d52bca..1b153e9 100755
+--- a/tests/test-commit-sign.sh
++++ b/tests/test-commit-sign.sh
+@@ -132,5 +132,6 @@ if ${CMD_PREFIX} ostree --repo=repo show main | grep -o 'Found [[:digit:]] signa
+ fi
+ rm -rf repo gnomerepo-files
++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye
+ echo "ok"
+diff --git a/tests/test-gpg-signed-commit.sh b/tests/test-gpg-signed-commit.sh
+index a0bf983..096c0e1 100755
+--- a/tests/test-gpg-signed-commit.sh
++++ b/tests/test-gpg-signed-commit.sh
+@@ -78,4 +78,6 @@ if ${OSTREE} show test2 | grep -o 'Found [[:digit:]] signature'; then
+   assert_not_reached
+ fi
++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye
++
+ echo "ok"
+diff --git a/tests/test-pull-mirror-summary.sh b/tests/test-pull-mirror-summary.sh
+index 20707a1..d5e27fc 100755
+--- a/tests/test-pull-mirror-summary.sh
++++ b/tests/test-pull-mirror-summary.sh
+@@ -121,3 +121,5 @@ echo "ok pull mirror with invalid summary sig and no verification"
+ # assert_file_has_content deltas.txt "${origmain}-${newmain}"
+ # echo "ok pull mirror with signed summary covering static deltas"
++
++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye
+diff --git a/tests/test-pull-summary-sigs.sh b/tests/test-pull-summary-sigs.sh
+index 202efda..dd2fcb0 100755
+--- a/tests/test-pull-summary-sigs.sh
++++ b/tests/test-pull-summary-sigs.sh
+@@ -133,3 +133,5 @@ assert_file_has_content summary.txt "Good signature from \"Ostree Tester <test@t
+ grep static-deltas summary.txt > static-deltas.txt
+ assert_file_has_content static-deltas.txt \
+   $(${OSTREE} --repo=repo rev-parse origin:main)
++
++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye
+diff --git a/tests/test-remote-gpg-import.sh b/tests/test-remote-gpg-import.sh
+index bb0c402..aa90eb8 100755
+--- a/tests/test-remote-gpg-import.sh
++++ b/tests/test-remote-gpg-import.sh
+@@ -143,4 +143,5 @@ if ${OSTREE} pull R2:main >/dev/null 2>&1; then
+ fi
+ ${OSTREE} pull R3:main >/dev/null
++gpg-connect-agent --homedir ${test_tmpdir}/gpghome killagent /bye
+ echo "ok"
diff --git a/debian/patches/Load-g-i-bindings-from-builddir-during-build-time-testing.patch b/debian/patches/Load-g-i-bindings-from-builddir-during-build-time-testing.patch
new file mode 100644 (file)
index 0000000..6f1ce23
--- /dev/null
@@ -0,0 +1,31 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Thu, 31 Mar 2016 09:02:23 +0100
+Subject: Load g-i bindings from builddir during build-time testing
+
+Previously, the build-time tests would only pass if the g-i bindings to
+OSTree were already installed, with a reasonably similar version.
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+---
+ Makefile-tests.am | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile-tests.am b/Makefile-tests.am
+index 9eb9ad8..97f0541 100644
+--- a/Makefile-tests.am
++++ b/Makefile-tests.am
+@@ -22,8 +22,12 @@ include $(top_srcdir)/buildutil/glib-tap.mk
+ # We should probably consider flipping the default for DEBUG.  Also,
+ # include the builddir in $PATH so we find our just-built ostree
+ # binary.
+-TESTS_ENVIRONMENT += OT_TESTS_DEBUG=1 \
+-      PATH=$$(cd $(top_builddir) && pwd):$${PATH}
++TESTS_ENVIRONMENT += \
++      GI_TYPELIB_PATH=$$(cd $(top_builddir) && pwd) \
++      LD_LIBRARY_PATH=$$(cd $(top_builddir)/.libs && pwd) \
++      OT_TESTS_DEBUG=1 \
++      PATH=$$(cd $(top_builddir) && pwd):$${PATH} \
++      $(NULL)
+ test_scripts = \
+       tests/test-basic.sh \
diff --git a/debian/patches/Symlink-libreaddir-rand.so-into-tests-directory.patch b/debian/patches/Symlink-libreaddir-rand.so-into-tests-directory.patch
new file mode 100644 (file)
index 0000000..d1206a3
--- /dev/null
@@ -0,0 +1,51 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Mon, 28 Mar 2016 13:46:23 +0100
+Subject: Symlink libreaddir-rand.so into tests directory
+
+This means it can be LD_PRELOADed during build-time testing.
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+---
+ .gitignore        | 1 +
+ Makefile-decls.am | 3 +++
+ Makefile-tests.am | 4 ++++
+ 3 files changed, 8 insertions(+)
+
+diff --git a/.gitignore b/.gitignore
+index d241cab..f37ca48 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -70,6 +70,7 @@ _build
+ /test-remote-add.test
+ /test-setuid.test
+ /test-xattrs.test
++/tests/libreaddir-rand.so
+ test-varint
+ test*.test
+ *.trs
+diff --git a/Makefile-decls.am b/Makefile-decls.am
+index a5c9d50..eefffd6 100644
+--- a/Makefile-decls.am
++++ b/Makefile-decls.am
+@@ -49,3 +49,6 @@ GITIGNOREFILES =
+ # This is a special facility to chain together hooks easily
+ INSTALL_DATA_HOOKS =
+ install-data-hook: $(INSTALL_DATA_HOOKS)
++
++ALL_LOCAL_RULES =
++all-local: $(ALL_LOCAL_RULES)
+diff --git a/Makefile-tests.am b/Makefile-tests.am
+index 9f359ad..9eb9ad8 100644
+--- a/Makefile-tests.am
++++ b/Makefile-tests.am
+@@ -211,6 +211,10 @@ EXTRA_DIST += \
+       tests/gpg-verify-data/trustdb.gpg \
+       tests/gpg-verify-data/gpg.conf
++tests-libreaddir-rand-so-symlink:
++      ln -fns ../.libs/libreaddir-rand.so tests
++ALL_LOCAL_RULES += tests-libreaddir-rand-so-symlink
++
+ # Unfortunately the glib test data APIs don't actually handle
+ # non-recursive Automake, so we change our code to canonically look
+ # for tests/ which is just a symlink when installed.
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4688883c94dd7641a91753d782e4ffad0f9f7c78 100644 (file)
@@ -0,0 +1,6 @@
+test-xattrs-use-TAP-syntax-to-skip-test.patch
+various-tests-skip-if-temp-directory-lacks-xattr-support.patch
+Symlink-libreaddir-rand.so-into-tests-directory.patch
+tap-test-clean-up-temporary-test-directories-as-intended.patch
+In-tests-that-use-gpg-terminate-the-gpg-agent-after-testi.patch
+Load-g-i-bindings-from-builddir-during-build-time-testing.patch
diff --git a/debian/patches/tap-test-clean-up-temporary-test-directories-as-intended.patch b/debian/patches/tap-test-clean-up-temporary-test-directories-as-intended.patch
new file mode 100644 (file)
index 0000000..1c0a914
--- /dev/null
@@ -0,0 +1,28 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Thu, 31 Mar 2016 08:24:56 +0100
+Subject: tap-test: clean up temporary test directories as intended
+
+The script created ./.testtmp but looked for ./.test, which isn't
+going to work.
+
+This means the various "ostree trivial-httpd --autoexit" processes
+actually exit, because their web roots are cleaned up now.
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+---
+ buildutil/tap-test | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/buildutil/tap-test b/buildutil/tap-test
+index e791454..6b2eb5c 100755
+--- a/buildutil/tap-test
++++ b/buildutil/tap-test
+@@ -13,7 +13,7 @@ touch ${tempdir}/.testtmp
+ function cleanup () {
+     if test -n "${TEST_SKIP_CLEANUP:-}"; then
+       echo "Skipping cleanup of ${tempdir}"
+-    else if test -f ${tempdir}/.test; then
++    else if test -f ${tempdir}/.testtmp; then
+       rm "${tempdir}" -rf
+     fi
+     fi
diff --git a/debian/patches/test-xattrs-use-TAP-syntax-to-skip-test.patch b/debian/patches/test-xattrs-use-TAP-syntax-to-skip-test.patch
new file mode 100644 (file)
index 0000000..6a06b78
--- /dev/null
@@ -0,0 +1,23 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Mon, 28 Mar 2016 13:08:32 +0100
+Subject: test-xattrs: use TAP syntax to skip test
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+---
+ tests/test-xattrs.sh | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/tests/test-xattrs.sh b/tests/test-xattrs.sh
+index 6a83a0b..2f2d99c 100755
+--- a/tests/test-xattrs.sh
++++ b/tests/test-xattrs.sh
+@@ -21,7 +21,8 @@ set -euo pipefail
+ touch test-xattrs
+ if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
+-    exit 77
++    echo "1..0 # SKIP: cannot run setfattr"
++    exit 0
+ fi
+ echo "1..2"
diff --git a/debian/patches/various-tests-skip-if-temp-directory-lacks-xattr-support.patch b/debian/patches/various-tests-skip-if-temp-directory-lacks-xattr-support.patch
new file mode 100644 (file)
index 0000000..c0b9b29
--- /dev/null
@@ -0,0 +1,120 @@
+From: Simon McVittie <smcv@debian.org>
+Date: Mon, 28 Mar 2016 13:18:42 +0100
+Subject: various tests: skip if temp directory lacks xattr support
+
+Some autobuilder environments place the entire build chroot on tmpfs, so
+even /var/tmp might not have this.
+
+Signed-off-by: Simon McVittie <smcv@debian.org>
+---
+ tests/test-basic-user.sh       | 6 ++++++
+ tests/test-delta.sh            | 7 +++++++
+ tests/test-demo-buildsystem.sh | 6 ++++++
+ tests/test-local-pull.sh       | 6 ++++++
+ tests/test-prune.sh            | 6 ++++++
+ tests/test-rofiles-fuse.sh     | 6 ++++++
+ 6 files changed, 37 insertions(+)
+
+diff --git a/tests/test-basic-user.sh b/tests/test-basic-user.sh
+index f53de89..efe723c 100755
+--- a/tests/test-basic-user.sh
++++ b/tests/test-basic-user.sh
+@@ -19,6 +19,12 @@
+ set -euo pipefail
++touch test-xattrs
++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
++    echo "1..0 # SKIP bare-user repository requires xattr support"
++    exit 0
++fi
++
+ echo "1..1"
+ . $(dirname $0)/libtest.sh
+diff --git a/tests/test-delta.sh b/tests/test-delta.sh
+index 12f54c7..4335779 100755
+--- a/tests/test-delta.sh
++++ b/tests/test-delta.sh
+@@ -156,6 +156,13 @@ ${CMD_PREFIX} ostree --repo=repo2 ls ${newrev} >/dev/null
+ echo 'ok pull delta'
++touch test-xattrs
++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
++    echo "ok apply offline # SKIP bare-user repository requires xattr support"
++    echo "ok apply offline inline # SKIP bare-user repository requires xattr support"
++    exit 0
++fi
++
+ rm repo2 -rf
+ mkdir repo2 && ${CMD_PREFIX} ostree --repo=repo2 init --mode=bare-user
+ mkdir deltadir
+diff --git a/tests/test-demo-buildsystem.sh b/tests/test-demo-buildsystem.sh
+index 500eac6..6708e61 100755
+--- a/tests/test-demo-buildsystem.sh
++++ b/tests/test-demo-buildsystem.sh
+@@ -24,6 +24,12 @@ if ! fusermount --version >/dev/null 2>&1; then
+     exit 0
+ fi
++touch test-xattrs
++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
++    echo "1..0 # SKIP bare-user repository requires xattr support"
++    exit 0
++fi
++
+ . $(dirname $0)/libtest.sh
+ echo "1..1"
+diff --git a/tests/test-local-pull.sh b/tests/test-local-pull.sh
+index a9beb08..c6df6ea 100755
+--- a/tests/test-local-pull.sh
++++ b/tests/test-local-pull.sh
+@@ -19,6 +19,12 @@
+ set -euo pipefail
++touch test-xattrs
++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
++    echo "1..0 # SKIP bare-user repository requires xattr support"
++    exit 0
++fi
++
+ echo "1..1"
+ . $(dirname $0)/libtest.sh
+diff --git a/tests/test-prune.sh b/tests/test-prune.sh
+index 7184ea9..c2f4eb9 100755
+--- a/tests/test-prune.sh
++++ b/tests/test-prune.sh
+@@ -127,6 +127,12 @@ assert_file_has_content deltascount "^1$"
+ echo "ok prune"
++touch test-xattrs
++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
++    echo "ok prune with partial repo # SKIP bare-user repository requires xattr support"
++    exit 0
++fi
++
+ rm repo -rf
+ ostree --repo=repo init --mode=bare-user
+ ${CMD_PREFIX} ostree --repo=repo remote add --set=gpg-verify=false origin $(cat httpd-address)/ostree/gnomerepo
+diff --git a/tests/test-rofiles-fuse.sh b/tests/test-rofiles-fuse.sh
+index 444fbce..d609cae 100755
+--- a/tests/test-rofiles-fuse.sh
++++ b/tests/test-rofiles-fuse.sh
+@@ -24,6 +24,12 @@ if ! fusermount --version >/dev/null 2>&1; then
+     exit 0
+ fi
++touch test-xattrs
++if ! setfattr -n user.testvalue -v somevalue test-xattrs; then
++    echo "1..0 # SKIP bare-user repository requires xattr support"
++    exit 0
++fi
++
+ . $(dirname $0)/libtest.sh
+ setup_test_repository "bare-user"